﻿#define _CRT_SECURE_NO_WARNINGS 1
//描述
//有一只兔子，从出生后第3个月起每个月都生一只兔子，小兔子长到第三个月后每个月又生一只兔子，假如兔子都不死，问第n个月的兔子总数为多少？
//
//本题有多组数据。
//
//数据范围：每组输入满足 1 \le n \le 31 \1≤n≤31
//输入描述：
//多行输入，一行输入一个int型整数表示第n个月
//
//输出描述：
//每一行输出对应的兔子总数
//
//示例1
//输入：
//1
//2
//3
//4
//5
//9
//复制
//输出：
//1
//1
//2
//3
//5
//34
// //其实就是斐波那契数列
//法一
//#include<stdio.h>
//int digui(int n)
//{
//    if (n == 1 || n == 2)
//        return 1;
//    else
//        return digui(n - 1) + digui(n - 2);
//}
//int main()
//{
//    int n = 0, tmp;
//    while (scanf("%d", &n) != EOF)
//    {
//        tmp = digui(n);
//        printf("%d\n", tmp);
//    }
//    return 0;
//}
//法二
//#include<stdio.h>
//int main()
//{
//    int n = 0;
//    while (scanf("%d", &n) != EOF)
//    {
//        int num1 = 1, num2 = 1, ret = 1;
//        for (int i = 2; i < n; i++)
//        {
//            ret = num1 + num2;
//            num1 = num2;
//            num2 = ret;
//        }
//        printf("%d\n", ret);
//    }
//    return 0;
//}
//描述
//数列的定义如下：数列的第一项为n，以后各项为前一项的平方根，求数列的前m项的和。
//
//输入描述：
//输入数据有多组，每组占一行，由两个整数n（n < 10000）和m(m < 1000)组成，n和m的含义如前所述。
//    输出描述：
//    对于每组输入数据，输出该数列的和，每个测试实例占一行，要求精度保留2位小数。
//    示例1
//    输入：
//    81 4
//    2 2
//    复制
//    输出：
//    94.73
//    3.41
//    求取一个数字的平方根可以使用数学库中的double sqrt(double num)函数完成
//#include<stdio.h>
//#include<math.h>
//int main()
//{
//    double n, m;
//    while (scanf("%lf%lf", &n, &m) != EOF)
//    {
//        double sum = 0;
//        while (m > 0)
//        {
//            sum += n;
//            n = sqrt(n);
//            m--;
//        }
//        printf("%.2lf\n", sum);
//    }
//    return 0;
//}
//珠玑妙算游戏（the game of master mind）的玩法如下。
//
//计算机有4个槽，每个槽放一个球，颜色可能是红色（R）、黄色（Y）、绿色（G）或蓝色（B）。例如，计算机可能有RGGB 4种（槽1为红色，槽2、3为绿色，槽4为蓝色）。作为用户，你试图猜出颜色组合。打个比方，你可能会猜YRGB。要是猜对某个槽的颜色，则算一次“猜中”；要是只猜对颜色但槽位猜错了，则算一次“伪猜中”。注意，“猜中”不能算入“伪猜中”。
//
//给定一种颜色组合solution和一个猜测guess，编写一个方法，返回猜中和伪猜中的次数answer，其中answer[0]为猜中的次数，answer[1]为伪猜中的次数。
//
//示例：
//
//输入： solution = "RGBY", guess = "GGRR"
//输出：[1, 1]
//解释： 猜中1次，伪猜中1次。
//
//来源：力扣（LeetCode）
//链接：https ://leetcode-cn.com/problems/master-mind-lcci
//著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
//int* masterMind(char* solution, char* guess, int* returnSize)
//{
//    *returnSize = 2;
//    int* anwer = (int*)calloc(2, sizeof(int));
//    int i = 0;
//    int arr1[26] = { 0 };
//    int arr2[26] = { 0 };
//    for (i = 0; i < 4; i++)
//    {
//        if (solution[i] == guess[i])
//            anwer[0]++;
//        else
//        {
//            arr1[solution[i] - 'A'] += 1;
//            arr2[guess[i] - 'A'] += 1;
//        }
//    }
//    for (i = 0; i < 26; i++)
//    {
//        anwer[1] += fmin(arr1[i], arr2[i]);
//    }
//    return anwer;
//}
//描述
//给出一个整型数组 numbers 和一个目标值 target，请在数组中找出两个加起来等于目标值的数的下标，返回的下标按升序排列。
//（注：返回的数组下标从1开始算起，保证target一定可以由数组里面2个数字相加得到）
//
//数据范围：2\leq len(numbers) \leq 10 ^ 52≤len(numbers)≤10
//5
//， - 10 \leq numbers_i \leq 10 ^ 9−10≤numbers
//i
//​
//≤10
//9
//，0 \leq target \leq 10 ^ 90≤target≤10
//9
//
//要求：空间复杂度 O(n)O(n)，时间复杂度 O(nlogn)O(nlogn)
//示例1
//输入：
//[3, 2, 4], 6
//复制
//返回值：
//[2, 3]
//复制
//说明：
//因为 2 + 4 = 6 ，而 2的下标为2 ， 4的下标为3 ，又因为 下标2 < 下标3 ，所以返回[2, 3]
//#include<stdio.h>
//int* twoSum(int* numbers, int numbersLen, int target, int* returnSize) {
//    // write code here
//    int i = 0;
//    int j = 0;
//    *returnSize = 2;
//    int* res = (int*)malloc(2 * sizeof(int));
//    for (i = 0; i < numbersLen; i++)
//    {
//        if (numbers[i] > target)
//            continue;
//        for (j = i + 1; j < numbersLen; j++)
//        {
//            if (numbers[i] + numbers[j] == target)
//            {
//                res[0] = i + 1;
//                res[1] = j + 1;
//            }
//        }
//    }
//    return res;
//}
//int main()
//{
//    int nums[3] = { 2,3,4 };
//    int x = 0;
//    twoSum(nums, 3, 7, &x);
//
//}
//描述
//现在有一个长度为 n 的正整数序列，其中只有一种数值出现了奇数次，其他数值均出现偶数次，请你找出那个出现奇数次的数值。
//
//数据范围：1 \le n \le 2 \times 10 ^ 6 \1≤n≤2×10
//6
//
//输入描述：
//第一行：一个整数n，表示序列的长度。第二行：n个正整数ai，两个数中间以空格隔开。
//输出描述：
//一个数，即在序列中唯一出现奇数次的数值。
//示例1
//输入：
//5
//2 1 2 3 1
//复制
//输出：
//3
//全部异或，出现偶数次的数字相同为0，剩下就是要找的数字
//#include<stdio.h>
//int main()
//{
//    int a, n, num = 0;
//    scanf("%d", &n);
//    for (int i = 0; i < n; i++)
//    {
//        scanf("%d", &a);
//        num ^= a;
//    }
//    printf("%d\n", num);
//    return 0;
//}